﻿using System;
using System.Windows.Forms;
using Scommesse.Presenters.Admin;

namespace Scommesse.View.Admin
{
    public partial class EventoDialog : Form
    {
        private IEventoPresenter _eventoPresenter;

        public EventoDialog()
        {
            InitializeComponent();
        }

        public void AddListener(IEventoPresenter presenter)
        {
            _eventoPresenter = presenter;
        }

        #region Properties

        public DateTime Date
        {
            get { return DateTimePicker.Value; }
            set { DateTimePicker.Value = value; }
        }

        public bool EventoEsistente
        {
            set { EsisteLabel.Visible = value; }
        }

        public String AddCategoria
        {
            set { CategoriaComboBox.Items.Add(value); }
        }

        public String NomeCategoria
        {
            get { return CategoriaComboBox.SelectedItem.ToString(); }  
        }

        public String CategoriaError
        {
            set { CatErrorProvider.SetError(CategoriaComboBox, value); }
        }

        public String AddCompetizione
        {
            set { CompetizioneComboBox.Items.Add(value); }
        }

        public String NomeCompetizione
        {
            get { return CompetizioneComboBox.SelectedItem.ToString(); }
            set { CompetizioneComboBox.Text = value; }
        }

        public String CompetizioneError
        {
            set { CompErrorProvider.SetError(CompetizioneComboBox, value); }
        }

        public String CompetitoreA
        {
            get { return InserisciCompetitoreATextBox.Text.Trim(); }
        }

        public String CompetitoreB
        {
            get { return InserisciCompetitoreBTextBox.Text.Trim(); }
        }

        public String CompAError
        {
            set { CompAErrorProvider.SetError(InserisciCompetitoreATextBox, value); }
        }

        public String CompBError
        {
            set { CompBErrorProvider.SetError(InserisciCompetitoreBTextBox, value); }
        }

        public String DataError
        {
            set { DataErrorProvider.SetError(DateTimePicker, value); }
        }

        #endregion

        // Inizializza la form appena viene showata per la prima volta
        private void EventoDialog_Shown(object sender, EventArgs e)
        {
            InserisciCompetitoreATextBox.Clear();
            InserisciCompetitoreBTextBox.Clear();
            CategoriaComboBox.Items.Clear();
            CompetizioneComboBox.Items.Clear();

            _eventoPresenter.Load_View();
        }

        private void ConfermaAggiungiEventoButton_Click(object sender, EventArgs e)
        {
            CompErrorProvider.Clear();
            CatErrorProvider.Clear();
            CompAErrorProvider.Clear();
            CompBErrorProvider.Clear();
            DataErrorProvider.Clear();

            _eventoPresenter.ConfermaAggiungiEvento();
        }

        private void AnnullaAggiungiEventoButton_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void CategoriaComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            CompetizioneComboBox.Items.Clear();

            _eventoPresenter.Load_Competizioni();
        }

        #region Auto Conferma On Enter

        private void InserisciCompetitoreATextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiEventoButton.PerformClick();
        }

        private void InserisciCompetitoreBTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiEventoButton.PerformClick();
        }

        private void CategoriaComboBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiEventoButton.PerformClick();
        }

        private void CompetizioneComboBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiEventoButton.PerformClick();
        }

        private void DateTimePicker_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiEventoButton.PerformClick();
        }

        #endregion
    }
}